package cn.tedu.charging.common.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Json工具类
 * 常见的JSON库   别人写好的工具类
 * Jackson(Srping默认的)和 Gson(谷歌开发的)    fastJson(阿里巴巴开发的)
 * 它们都提供了方便的API来处理JSON数据。
 * 不同的公司可使会能用不同的JSON库，根据项目需求选择合适的JSON库。
 */

public class JsonUtils {

    private static final ObjectMapper mapper = new ObjectMapper();

    /**
     * 对象转JSON字符串
     * @param obj
     * @return
     */
    public static String toJson(Object obj) {
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            throw new RuntimeException("JSON序列化失败", e);
        }
    }

    /**
     * JSON字符串转对象
     * @param json
     * @param clazz  目标对象的类的类型
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        try {
            return mapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            throw new RuntimeException("JSON反序列化失败", e);
        }
    }

}
